﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class  Obra
    {
        public string getCorrelativo(dbGestionDataContext _db, int idProyecto)
        {
            string numDocumento = "";


            var q = from a in _db.Obras
                    where a.idProyecto == idProyecto
                    group a by a.idProyecto into g
                    select new
                    {
                        idProyecto = g.Key,
                        codigo = g.Max(p => p.codigo)
                    };


            if (q.Count()==0)
            {
                numDocumento = "001";
            }
            else
            {
                int numActual = int.Parse(q.First().codigo);
                numActual++;
                if (numActual < 10)
                    numDocumento = "00" + numActual.ToString();
                else if (numActual < 100)
                    numDocumento = "0" + numActual.ToString();
                                
                else if (numActual > 999)
                {
                    throw new Exception("Limite  de Correlativo ");
                }


            }
            return numDocumento;

        }
        public int getidAnterior(dbGestionDataContext _db, int idinternal,int idProyecto)
        {
            int intAnterior=0;

            //revisar la sentencia generada
            //revisar la sentencia generada
            var id = from i in _db.Obras
                     where i.idInternal < idinternal && i.idProyecto == idProyecto
                     group i by i.idProyecto into g
                     select new
                     {
                         idAnterior = g.Max(p => p.idInternal)
                     };
            if (id.Count() > 0)
            {
                intAnterior = id.First().idAnterior;

            }
            else
            {
                throw new Exception("No existe Registros");
            }
            
            
             return intAnterior;

        }
        
        public int getidSiguiente(dbGestionDataContext _db, int idinternal,int idProyecto)
        {
            int intSiguiente= 0;

            //revisar la sentencia generada
            var id = from i in _db.Obras
                     where i.idInternal > idinternal && i.idProyecto==idProyecto
                     group i by i.idProyecto into g
                     select new
                     {
                             idSiguiente = g.Min(p => p.idInternal)
                     };


            if (id.Count() > 0)
            {
                intSiguiente = id.First().idSiguiente;

            } else
            {
                throw new Exception("No existe Registros");
            }

    return intSiguiente;
        }
        public int getTipoInsumoFromObra()
        {

            //int idTipoInsumo = 1;
            //if (this.idTipoObra==2)
            //     idTipoInsumo=2 ;

            return this.idTipoObra.Value;
        }
    }
}
